<template>
  <el-card>
    <el-tabs v-model="activeName">
      <el-tab-pane label="总体统计" name="basic">
        <statistics-overview />
      </el-tab-pane>
      <el-tab-pane label="片区统计" name="columnInfo">
        <area-statistics />
      </el-tab-pane>
      <el-tab-pane label="楼宇统计" name="genInfo">
        <building-statistics />
      </el-tab-pane>
    </el-tabs>
    <!-- <el-form label-width="100px">
      <div style="text-align: center; margin-left: -100px; margin-top: 10px">
        <el-button type="primary" @click="submitForm()">提交</el-button>
        <el-button @click="close()">返回</el-button>
      </div>
    </el-form> -->
  </el-card>
</template>

<script setup name="GenEdit" lang="ts">
import { getGenTable, updateGenTable } from '@/api/tool/gen';
import { DbColumnVO, DbTableVO } from '@/api/tool/gen/types';
import { optionselect as getDictOptionselect } from '@/api/system/dict/type';
import { DictTypeVO } from '@/api/system/dict/type/types';
import StatisticsOverview from './statisticsOverview.vue';
import AreaStatistics from './areaStatistics.vue';
import BuildingStatistics from './buildingStatistics.vue';
import GenInfoForm from './genInfoForm.vue';
import { RouteLocationNormalized } from 'vue-router';

const route = useRoute();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;

const activeName = ref('basic');
const tableHeight = ref(document.documentElement.scrollHeight - 245 + 'px');
const tables = ref<DbTableVO[]>([]);
const columns = ref<DbColumnVO[]>([]);
const dictOptions = ref<DictTypeVO[]>([]);
const info = ref<Partial<DbTableVO>>({});

const genInfo = ref<InstanceType<typeof GenInfoForm>>();

/** 提交按钮 */
const submitForm = () => {
  const genForm = genInfo.value?.$refs.genInfoForm;

  getFormPromise(genForm).then(async (res) => {
    if (res) {
      const genTable: any = Object.assign({}, info.value);
      genTable.columns = columns.value;
      genTable.params = {
        treeCode: info.value?.treeCode,
        treeName: info.value.treeName,
        treeParentCode: info.value.treeParentCode,
        parentMenuId: info.value.parentMenuId
      };
      const response = await updateGenTable(genTable);
      proxy?.$modal.msgSuccess(response.msg);
      if (response.code === 200) {
        close();
      }
    } else {
      proxy?.$modal.msgError('表单校验未通过，请重新检查提交内容');
    }
  });
};
const getFormPromise = (form: any) => {
  return new Promise((resolve) => {
    form.validate((res: any) => {
      resolve(res);
    });
  });
};
// const close = () => {
//   const obj: RouteLocationNormalized = {
//     path: '/tool/gen',
//     fullPath: '',
//     hash: '',
//     matched: [],
//     meta: undefined,
//     name: undefined,
//     params: undefined,
//     redirectedFrom: undefined,
//     query: { t: Date.now().toString(), pageNum: route.query.pageNum }
//   };
//   proxy?.$tab.closeOpenPage(obj);
// };

// (async () => {
//   const tableId = route.params && (route.params.tableId as string);
//   if (tableId) {
//     // 获取表详细信息
//     const res = await getGenTable(tableId);
//     columns.value = res.data.rows;
//     info.value = res.data.info;
//     tables.value = res.data.tables;
//     /** 查询字典下拉列表 */
//     const response = await getDictOptionselect();
//     dictOptions.value = response.data;
//   }
// })();
</script>
